-
Notifications
You must be signed in to change notification settings - Fork 702
Conversation
- Initial arm64 support - Switch to openjdk-11, zulu not available for arm64? - Parameterize Docker 'FROM' to use $REPOSITORY, default to 'confluentinc', pass to docker as build-arg from build-debian script Steps: - Ubuntu >= 18.04? (I was using 19.10) - docker >= 19.03.5 - `apt install qemu-user qemu-user-static make maven` - enable experimental on docker daemon and client (for buildx) - `docker buildx create --name mp --platform=linux/arm32,linux/arm64,linux/amd64 --use` - `docker buildx inspect mp --bootstrap` - `make build-debian REPOSITORY=kymeric COMPONENTS="base zookeeper kafka"` -TODO: I commented out the "rpm" type in the Makefile so I could focus on debian packages. Need to check/verify all centos packages build and are cross-platform - TODO: debian/base adds the confluent APT repository with [arch=amd64], but the packages seem to be architecture agnostic. I'm not an APT expert, can we just remove [arch=amd64]? Leaving it for now for some discussion with people who would know better - TODO: Zulu cleanup? Still see the zulu version variable in a few places - TODO: Tag images with version label - Need to switch from `docker tag ...` to some `docker manifest create... push` commands, comments in build-debian.
It looks like @jonstelly hasn't signed our Contributor License Agreement, yet.
You can read and sign our full Contributor License Agreement here. Once you've signed reply with Appreciation of efforts, clabot |
[clabot:check] |
@confluentinc It looks like @jonstelly just signed our Contributor License Agreement. 👍 Always at your service, clabot |
I've also got the base zookeeper image building for a handful of different architectures (since that's what the kafka helm chart uses): 31z4/zookeeper-docker#90 As noted in that PR, it's now possible to use helm to deploy kafka with zookeeper to kubernetes on arm64, amd64... Is there interest in widening the supported platforms to some of the additional zookeeper platforms? I've only got amd64 and arm64 for testing so would need some additional help for testing those other platforms. |
Just in case, Liberica JDK is available for arm64 (and x86 of course) with free security updates, and customers have an option to get extra support for exactly the same binary. |
I haven't been a Java guy for a while so my read on the JDK/JRE landscape is extremely basic. So we've got Liberica, Zulu, the OpenJDK, AdoptOpenJDK. I do see that Zulu has images available for arm32, arm64 and amd64 but they didn't seem to be in their debian repository and they only provide docker images for amd64. The switch to openjdk was more of a proof-of-concept because it made building for all platforms easier, but it feels like the right thing to do may be to just switch the dockerfile to download the Zulu JDK archive and extract it? Alternatively, the changes I made for the base/library zookeeper image linked above was to use adoptopenjdk:8u232-b09-jre-hotspot as a base image so we could do that here too? I'm not sure if any of the confluent docker images need the full JDK instead of just the JRE, but if that's only a few we could even split Happy to get some suggestions/guidance here. |
So, this is going to be merged soon?, are waiting to build their own ARM64 images? |
I haven't heard back from the maintainers and my environments have changed to where I'm not using Kafka on ARM64 anymore so this isn't a priority for me, but... I would still like to get this merged so I'm happy to finish this up if I can get some guidance from Confluent/maintainers. I think the only open question here would be about the JDK. It looks like Zulu now builds openjdk v8 for arm64 but I'm not sure if they publish the arm64 package to their APT repo. I can set things back up and test that but I'd rather hear from a maintainer that it's something they'd be willing to merge before I spend more time on it. |
First off: Thank you for taking the time to contribute changes to this project, but unfortunately we are unable to accept the changes:
To the first point, you can follow confluentinc/common-docker#117 until such a time when Confluent will adopt ARM64 platform support into the Closing since we're not planning on ARM support in this deprecated repo. |
Basic working zookeeper and kafka docker images for arm64 platform. Resolves #718
There are still a handful of TODOs before this is ready to merge but I'm hoping to get some feedback on the basic changes and if this looks like a reasonable direction.
I've got docker images published at:
kymeric/cp-base
kymeric/cp-zookeeper
kymeric/cp-kafka
Testing:
I've run the following slightly-modified getting started commands on my raspberry pi 4 and everything works as expected. I'll be testing more thoroughly over the next few weeks.
commands:
os:
output:
Comments welcome and appreciated.
Changes:
debian:jessie
todebbian:stable
(Jessie not available for arm64`)Build:
apt install qemu-user qemu-user-static make maven
docker buildx create --name mp --platform=linux/arm32,linux/arm64,linux/amd64 --use
docker buildx inspect mp --bootstrap
make build-debian REPOSITORY=kymeric COMPONENTS="base zookeeper kafka"
TODO:
docker tag ...
to somedocker manifest create... push
commands, comments in build-debian.